import type { IDbSelect } from '@/types/global'

// 调度成功code
export const DISPATH_SUCCESS_CODE = 200
// 执行成功code
export const EXECUTE_SUCCESS_CODE = 200

// 执行器-注册方式
export enum ENUM_TASK_EXECUTOR_RIGISTER_TYPE {
  '自动注册' = 0,
  '手动录入' = 1
}
// 执行器-注册方式-列表
export const TASK_EXECUTOR_RIGISTER_TYPES: IDbSelect[] = [
  { label: '自动注册', value: ENUM_TASK_EXECUTOR_RIGISTER_TYPE['自动注册'], tagType: 'primary' },
  { label: '手动录入', value: ENUM_TASK_EXECUTOR_RIGISTER_TYPE['手动录入'], tagType: 'primary' }
]

// 任务状态-枚举
export enum ENUM_TASK_STATUS {
  '全部' = -1,
  '停止' = 0,
  '启动' = 1
}
// 任务状态-列表
export const TASK_STATUS_LIST: IDbSelect[] = [
  { label: '全部', value: ENUM_TASK_STATUS['全部'], tagType: 'primary' },
  { label: '停止', value: ENUM_TASK_STATUS['停止'], tagType: 'danger' },
  { label: '启动', value: ENUM_TASK_STATUS['启动'], tagType: 'success' }
]
// 调度日志-清理方式列表
export const TASK_LOG_CLEAR_TYPES: IDbSelect[] = [
  { label: '清理一个月之前的日志', value: 1 },
  { label: '清理三个月之前的日志', value: 2 },
  { label: '清理六个月之前的日志', value: 3 },
  { label: '清理一年之前的日志', value: 4 },
  { label: '清理一千条以前的日志', value: 5 },
  { label: '清理一万条以前的日志', value: 6 },
  { label: '清理三万条以前的日志', value: 7 },
  { label: '清理十万条以前的日志', value: 8 },
  { label: '清理所有的日志', value: 9 }
]

// 调度日志状态-枚举
export enum ENUM_TASK_LOG_STATUS {
  '全部' = '-1',
  '成功' = '1',
  '失败' = '2',
  '进行中' = '3'
}
// 调度日志状态-列表
export const TASK_LOG_STATUS_LIST: IDbSelect[] = [
  { label: '全部', value: ENUM_TASK_LOG_STATUS['全部'] },
  { label: '成功', value: ENUM_TASK_LOG_STATUS['成功'] },
  { label: '失败', value: ENUM_TASK_LOG_STATUS['失败'] },
  { label: '进行中', value: ENUM_TASK_LOG_STATUS['进行中'] }
]

// 调度类型-枚举
export enum ENUM_TASK_DISPATCH_TYPE {
  '无' = 'NONE',
  'CRON' = 'CRON',
  '固定速度' = 'FIX_RATE'
}
// 调度类型-列表
export const TASK_DISPATCH_TYPES: IDbSelect[] = [
  { label: '无', value: ENUM_TASK_DISPATCH_TYPE['无'] },
  { label: 'CRON', value: ENUM_TASK_DISPATCH_TYPE['CRON'] },
  { label: '固定速度', value: ENUM_TASK_DISPATCH_TYPE['固定速度'] }
]

// 运行模式-枚举
export enum ENUM_TASK_RUN_TYPE {
  'BEAN' = 'BEAN',
  'GLUE(Java)' = 'GLUE_GROOVY',
  'GLUE(Shell)' = 'GLUE_SHELL',
  'GLUE(Python)' = 'GLUE_PYTHON',
  'GLUE(PHP)' = 'GLUE_PHP',
  'GLUE(Nodejs)' = 'GLUE_NODEJS',
  'GLUE(PowerShell)' = 'GLUE_POWERSHELL'
}
// 运行模式-列表
export const TASK_RUN_TYPES: IDbSelect[] = [
  { label: 'BEAN', value: ENUM_TASK_RUN_TYPE['BEAN'] },
  { label: 'GLUE(Java)', value: ENUM_TASK_RUN_TYPE['GLUE(Java)'] },
  { label: 'GLUE(Shell)', value: ENUM_TASK_RUN_TYPE['GLUE(Shell)'] },
  { label: 'GLUE(Python)', value: ENUM_TASK_RUN_TYPE['GLUE(Python)'] },
  { label: 'GLUE(PHP)', value: ENUM_TASK_RUN_TYPE['GLUE(PHP)'] },
  { label: 'GLUE(Nodejs)', value: ENUM_TASK_RUN_TYPE['GLUE(Nodejs)'] },
  { label: 'GLUE(PowerShell)', value: ENUM_TASK_RUN_TYPE['GLUE(PowerShell)'] }
]

// 路由策略-枚举
export enum ENUM_TASK_ROUTER_STRATEGY {
  '第一个' = 'FIRST',
  '最后一个' = 'LAST',
  '轮询' = 'ROUND',
  '随机' = 'RANDOM',
  '一致性HASH' = 'CONSISTENT_HASH',
  '最不经常使用' = 'LEAST_FREQUENTLY_USED',
  '最近最久未使用' = 'LEAST_RECENTLY_USED',
  '故障转移' = 'FAILOVER',
  '忙碌转移' = 'BUSYOVER',
  '分片广播' = 'SHARDING_BROADCAST'
}
// 路由策略-列表
export const TASK_ROUTER_STRATEGY_LIST: IDbSelect[] = [
  { label: '第一个', value: ENUM_TASK_ROUTER_STRATEGY['第一个'] },
  { label: '最后一个', value: ENUM_TASK_ROUTER_STRATEGY['最后一个'] },
  { label: '轮询', value: ENUM_TASK_ROUTER_STRATEGY['轮询'] },
  { label: '随机', value: ENUM_TASK_ROUTER_STRATEGY['随机'] },
  { label: '一致性HASH', value: ENUM_TASK_ROUTER_STRATEGY['一致性HASH'] },
  { label: '最不经常使用', value: ENUM_TASK_ROUTER_STRATEGY['最不经常使用'] },
  { label: '最近最久未使用', value: ENUM_TASK_ROUTER_STRATEGY['最近最久未使用'] },
  { label: '故障转移', value: ENUM_TASK_ROUTER_STRATEGY['故障转移'] },
  { label: '忙碌转移', value: ENUM_TASK_ROUTER_STRATEGY['忙碌转移'] },
  { label: '分片广播', value: ENUM_TASK_ROUTER_STRATEGY['分片广播'] }
]

// 调度过期策略-枚举
export enum ENUM_TASK_DISPATCH_OUTTIME_STRATEGY {
  '忽略' = 'DO_NOTHING',
  '立即执行一次' = 'FIRE_ONCE_NOW'
}
// 调度过期策略-列表
export const TASK_DISPATCH_OUTTIME_STRATEGY_LIST: IDbSelect[] = [
  { label: '忽略', value: ENUM_TASK_DISPATCH_OUTTIME_STRATEGY['忽略'] },
  { label: '立即执行一次', value: ENUM_TASK_DISPATCH_OUTTIME_STRATEGY['立即执行一次'] }
]

// 阻塞处理策略-枚举
export enum ENUM_TASK_BLOCK_STRATEGY {
  '单机串行' = 'SERIAL_EXECUTION',
  '丢弃后续调度' = 'DISCARD_LATER',
  '覆盖之前调度' = 'COVER_EARLY'
}
// 阻塞处理策略-列表
export const TASK_BLOCK_STRATEGY_LIST: IDbSelect[] = [
  { label: '单机串行', value: ENUM_TASK_BLOCK_STRATEGY['单机串行'] },
  { label: '丢弃后续调度', value: ENUM_TASK_BLOCK_STRATEGY['丢弃后续调度'] },
  { label: '覆盖之前调度', value: ENUM_TASK_BLOCK_STRATEGY['覆盖之前调度'] }
]
